﻿using System;

namespace MaxStoreErp.Core.Interfaces
{
    /// <summary>
    /// Интерфейс логгирования
    /// </summary>
    public interface ILogger
    {
        /// <summary>
        /// Логгировать отладочное сообщение
        /// </summary>
        /// <param name="message">Сообщение</param>
        /// <param name="parameters">Параметры для формирования параметризированного описания</param>
        void LogDebug(string message, params object[] parameters);

        /// <summary>
        /// Логгировать информационное сообщение
        /// </summary>
        /// <param name="message">Сообщение</param>
        /// <param name="parameters">Параметры для формирования параметризированного описания</param>
        void LogInfo(string message, params object[] parameters);

        /// <summary>
        /// Логгировать предупреждающее сообщение
        /// </summary>
        /// <param name="message">Сообщение</param>
        /// <param name="parameters">Параметры для формирования параметризированного описания</param>
        void LogWarning(string message, params object[] parameters);

        /// <summary>
        /// Логгировать сообщение об ошибке
        /// </summary>
        /// <param name="message">Сообщение</param>
        /// <param name="parameters">Параметры для формирования параметризированного описания</param>
        void LogError(string message, params object[] parameters);

        /// <summary>
        /// Логгировать сообщение об ошибке
        /// </summary>
        /// <param name="message">Сообщение</param>
        /// <param name="exception">Exception</param>
        /// <param name="parameters">Параметры для формирования параметризированного описания</param>
        void LogError(Exception exception, string message, params object[] parameters);

        /// <summary>
        /// Логгировать сообщение об ошибке
        /// </summary>
        /// <param name="exception">Exception</param>
        void LogError(Exception exception);
    }
}
